﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using AssessmentTool.Controls;
using AssessmentTool.ServiceBridge;
using AssessmentTool.Services.DTO;
using ModelLayer;
using System.Collections.Generic;
using System.Linq;
using AssessmentTool.PresentationLogic.EventArguments;
namespace AssessmentTool.PresentationLogic.Controllers
{
    public class RadarController:AbstractController<Radar>
    {
        private ProfiliDTO profilo;
        Color rosso = Color.FromArgb(255, 220, 0, 0);
        Color blu = Color.FromArgb(255, 0, 226, 255);
        Color verde = Color.FromArgb(255, 0, 220, 0);
        public RadarController(Radar element)
            : base(element)
        {
            ed.subscrive("CARICARADAR", createRadar);
            
        }

        public void createRadar(EventArgs e)
        {
            profilo = ((RadarEventArgs)e).profilo;
            int spicchio = 0;
            element.inizializza(profilo.Competenze.Count);
            

            foreach (ProfiloCompetenzaDTO dto in profilo.Competenze)
            {

                int valoreFornito = (int)Math.Round(dto.Fornito, 0);
                if (valoreFornito > 10)
                    valoreFornito = 10;
                int valoreRichiesto = (int)Math.Round(dto.Richiesto, 0);
                if (valoreRichiesto > 10)
                    valoreRichiesto = 10;
                Color esterno = (dto.CompetenzeMancanti.Count+dto.CompetenzeMancantiMaSufficenti.Count) > 0 ? rosso : verde;
                
                if(valoreFornito>valoreRichiesto)
                {
                    if(valoreFornito>0)
                        element.aggiungiArco(blu, valoreFornito, spicchio);
                    if(valoreRichiesto>0)
                    element.aggiungiArco(verde, valoreRichiesto, spicchio);
                    element.aggiungiArcoEsterno(dto.Competenza.Codice, esterno, spicchio);
                    
                }
                if (valoreFornito == valoreRichiesto)
                {
                    if (valoreFornito > 0)
                    {
                        element.aggiungiArco(verde, valoreRichiesto, spicchio);
                        element.aggiungiArcoEsterno(dto.Competenza.Codice, esterno, spicchio);
                    }
                }
                if (valoreFornito < valoreRichiesto)
                {
                    if(valoreRichiesto>0)
                        element.aggiungiArco(rosso, valoreRichiesto, spicchio);
                    if(valoreFornito>0)
                        element.aggiungiArco(verde, valoreFornito, spicchio);
                    element.aggiungiArcoEsterno(dto.Competenza.Codice, esterno, spicchio);
                    
                }

                spicchio++;
            }
           
        }
    }
}
